Conversation
|
Hi @juaristi22, could you please review this PR when you have a chance? This is my first time working in a data repo, and I’m not yet confident that my approach to adding the childcare attendance inputs follows Microcosm’s requirements and conventions. Please be as critical and thorough as you would normally be—don’t hold back because it’s my first contribution here. I’d especially appreciate feedback on the survey mapping, imputation approach, build integration, and whether the validation is sufficient. Please also point out even minor issues with wording, naming, formatting, or code organization; I want to learn the repo’s standards and get this right. The PR description includes a “Survey data for reviewers” section with the two source files and a README explaining how they are used. The Drive folder is accessible with a signed-in PolicyEngine Google account. The remaining limitations and the separate integration needed for #893 are documented as well. Thank you! |
Program reviewBase repository: PolicyEngine/microcosm Source DocumentsNo source documents registered; see scope and validation. What looks good
CriticalC1 — CRITICAL (Must Fix): attendance values are not bound to their source receipt, and refreshing an enriched base silently retains stale values (OPEN)Location: Trigger / reproduction: use an otherwise valid base H5 containing non-default values for the three attendance columns (the native candidate produced by this PR is such an H5) and run the fiscal builder without the two NSECE TSV flags. The argument parser only checks that the flags are paired when one is supplied, the stage is skipped when both are absent, the generic H5 loader reads only the six entity tables and discards Expected: a release must either execute the pinned source stage or validate and carry a receipt cryptographically/content-bound to the exact persisted attendance values. Re-running with a changed source identity or seed must either recompute derived cells or reject the incompatible pre-existing provenance. Observed: arbitrary or stale non-default values satisfy the hard coverage manifest, while source coverage may contain no attendance receipt; when the stage is requested on an enriched input, output values and new metadata can describe different executions. Impact: this defeats the repository's load-bearing artifact/provenance contract and can certify materially different state childcare-subsidy outputs as if they came from the reviewed NSECE mapping. The committed comparison shows the attendance inputs move potential modeled benefits from about $2.25B to $5.29B, so accepting unbound/stale values is output-material. The new tests cover flag pairing and same-input idempotence, but not receipt-required loading, changed-source/seed refresh, or final source-coverage enforcement. Should AddressA1 — SHOULD ADDRESS: the final release gate does not reassert row-complete attendance (OPEN)
A2 — SHOULD ADDRESS: invalid or missing household source identities collapse into one sibling-dependence group (OPEN)Location: Trigger / reproduction: pass a US frame whose Expected: source household identities used to couple sibling draws should be complete and every person link should resolve; invalid identity must fail closed, as comparable source-ID mapping code in Observed: unrelated children with unresolved source identities are treated as one synthetic household for the shared-rank component. Impact: on malformed or legacy inputs this introduces artificial cross-household dependence and masks an upstream linkage defect. The qualified BuildP parent likely satisfies the late-producer finite-ID invariant, so this does not refute the committed candidate, but the new public stage itself does not enforce its stated identity precondition. A3 — SHOULD ADDRESS: sibling validation covers only binary participation, while the shared rank couples full schedule intensity (OPEN)
SuggestionsS1 — SUGGESTION: foreground the questionnaire-transport discrepancy and define acceptance criteria (OPEN)
S2 — SUGGESTION: the persisted operation order collapses three distinct transformations to one generic label (OPEN)
Coordinator assessment: The code reviewer independently identified the same receipt-auditability issue; it is consolidated here once. Evidence Gaps
Notes
Validation SummaryInspected the five-commit, 36-file merge-base diff and affected runtime, build, serializer, coverage, documentation, tests, and aggregate evidence. Local tests: NOT RUN (environment unavailable; no dependency install). GitHub CI: 23/23 SUCCESS at head 3fe3e68. Official public source review covered the NSECE study page, Census ASEC variable catalog, and BLS CPI-U table; licensed source bytes/codebooks and full-data artifacts were unavailable. Timingsetup seconds: 29.00s; scope seconds: 67.00s; parallel review seconds: 765.00s; policy role seconds: 765.00s; code role seconds: 525.00s; adjudication seconds: 0.00s; consolidation cleanup seconds: 140.00s; elapsed seconds: 976.00s Review SeverityREQUEST_CHANGES. Open findings: 1 critical, 3 should address, 2 suggestions. |
Resolve the coverage report and multispine test conflicts using the specification generated from the combined branch. Preserve childcare recipe and draft validation limitations.
- Keep frame metadata through the ACA source-output step so the attendance receipt reaches the final export check. - Add the native receipt key without rewriting the person table, and persist and restore only the attendance context and binding. - Compare recipe code/runtime identity at bind and release export only; read-only native ingress checks content. - Carry the receipt through the L0 refit export and restore it in the fiscal builder's --base-h5 loader. - Refuse a build with neither NSECE source files nor bound attendance before calibration, and keep an unbound-attendance failure in the batched report. - Widen thin noncalendar-bridge cells to the next matching level and count children by matching level. - Reject unlisted region, parent-work and negative income codes (User's Guide HH-63, HH-175, HH-483). - Fail the require_observed outside-domain policy early with the fixing flag, and run the stage after the hours producer. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Rebuild from the pinned parent through the production stage, then rerun the population comparison, paired sensitivity and native-loader verification. Add a five-split masked-calendar comparison of the bridge before and after thin-cell widening. Earlier reports remain as historical evidence. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Classify write_native_childcare_receipt as a non-table HDF write, let the ACA source-output test's Frame stub carry metadata and assert it survives, and fix two new tests that indexed the wrong source row and used a frame whose adult already had observed attendance. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Hi @juaristi22, thanks again for the detailed review. Could you please take another look at the latest revision ( I've implemented fixes for the receipt/value binding (C1), final row-completeness checks (A1), invalid household identities (A2), and explicit operation provenance (S2). Attendance receipts also survive native exports and annual projections. All 24 CI checks pass. The expanded household and transport diagnostics still show unresolved statistical limitations related to A3/S1. The required raw-source build and certification are also outstanding, with upstream prerequisites documented in the merge-readiness audit. I'm keeping this as a draft. I'd especially appreciate your assessment of whether the engineering fixes meet the repo's requirements and what evidence or methodological changes are needed to address the remaining validation gaps. Please keep being thorough, including on wording, naming, formatting, and process—I'm still learning the data repo's conventions. Thank you! |
Program reviewBase repository: PolicyEngine/microcosm Source DocumentsNo source documents registered; see scope and validation. CriticalC1 — CRITICAL — RESOLVED: attendance values are content-bound to their execution and checked through output boundaries (RESOLVED)
C2 — CRITICAL (Must Fix before merge): the required raw-source build and certification receipt have not been produced (OPEN)
Should AddressA1 — SHOULD ADDRESS — RESOLVED: final release export enforces rowwise completeness and schedule validity (RESOLVED)
A2 — SHOULD ADDRESS — RESOLVED: sibling coupling rejects missing or noncanonical household identities (RESOLVED)
A3 — SHOULD ADDRESS — REFRAMED / STILL OPEN: expanded validation demonstrates that the production household schedule process fails its declared screens (STILL OPEN)
A4 — Target-frame checkpoints are not bound to the attendance receipt (OPEN)Evidence: Trigger / reproduction: run once with a durable Expected: any input that can alter materialized target columns must invalidate the target-frame checkpoint and reform-vector cache. Observed: the attendance binding/execution SHA is absent from both the checkpoint identity and the cache context beginning at Impact: the calibration matrix can come from the prior attendance realization even while the exported base frame and final receipt contain the new one. The issue is immediately observable if an attendance column is named through the supported repeatable SuggestionsS1 — SUGGESTION — RESOLVED AS WRITTEN; transport validity remains a material evidence gap (RESOLVED)
Coordinator assessment: The code reviewer retained this as open because the transport premise itself remains unresolved. I adopt the narrower policy/source disposition: the original requested documentation, predeclared screens, and paired sensitivity analysis were supplied, so S1 is resolved as a review action; transport validity remains explicitly listed as a material evidence gap and does not become approval. S2 — SUGGESTION — RESOLVED: the receipt records the material operations in execution order (RESOLVED)
Evidence Gaps
Notes
Validation SummaryLocal affected tests: NOT RUN (system Python lacks pytest; no existing project environment). Exact-head GitHub CI: 24/24 SUCCESS at 25a54a4. Reviewed the attendance-specific incremental commits and 38,155-line targeted diff; the policy role independently matched all seven committed production recipe hashes. No licensed-source or full-build reproduction was possible. Timingsetup seconds: 77.00s; scope seconds: 33.00s; parallel review seconds: 504.00s; policy role seconds: 471.00s; code role seconds: 322.00s; adjudication seconds: 31.00s; consolidation cleanup seconds: 100.00s; elapsed seconds: 661.00s Review SeverityREQUEST_CHANGES. Open findings: 1 critical, 2 should address, 0 suggestions. |
Missing person-level childcare attendance can leave household CCDF calculations at zero even when childcare expenses are present. This PR adds a dataset-side NSECE attendance adapter and fiscal-build integration, preserving PolicyEngine-US input defaults.
Draft — not ready to merge. Maria's September 22 review closes the prior integrity, row-completeness, household-identity and provenance findings. The raw-source build/certification requirement (C2) and household-model validation concern (A3) remain open. No population is published.
Implementation
September 27 review fixes
Merged PolicyEngine main at
9e5b0cee, resolving the builder, generated coverage and test-layout conflicts. Tests now use the repository's engine-free/US-engine directories and shared test support.A4: revalidate attendance immediately before target materialization and include its binding digest in the checkpoint identity. Reform vectors already include the full materializer identity, so they also invalidate. Both changed values and a changed recipe that emits identical values miss the old caches; unchanged executions reuse them. A negative-control run reproduces the stale recipe-only checkpoint hit without this fix.
Preserve the attendance receipt before main's new post-export scorer hashes the completed H5, while retaining its stored-input checks and batching behavior.
Evidence and remaining work
The September 17 candidate contains 166,321 people, 57,240 households and 31,889 under-13 children. Fresh September 27 verification through both native loaders reproduces the committed integrity report byte for byte, preserving every original value/weight and the exact attendance binding. The source recipe and population estimates are unchanged.
The earlier attendance-only 2026-policy comparison reduced zero-benefit jurisdictions from 31 to 2 (MD/NV), with potential modeled benefits rising from $2.254B to $6.206B on fixed source ages/incomes. These are diagnostic estimates, not calibrated spending, caseload estimates or model-accuracy evidence.
Current review audit and validation · Aggregate reports and experiment history
Validation
Full details are in the linked audit. GitHub CI has not been monitored for this update.
Survey data for reviewers
Download the source ZIP from Google Drive, accessible to signed-in PolicyEngine Google accounts.
NSECE-2024-PR916-source-files.zipcontains:39466-0004-Data.tsv(DS0004): childcare calendar records.39466-0005-Data.tsv(DS0005): household/child characteristics, survey weights and regular childcare hours.README-FILES-USED.txt: roles, SHA-256 checksums and this PR link.These are the unchanged source bytes used by the adapter. ASEC files, target populations and private person-level receipt inventories are not included. Only synthetic tests and aggregate evidence are committed.
Addresses #915; does not close the remaining statistical, provider/activity or older-child gaps.